package com.xuetang9.fujian.streamopt;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;

/**
 * @author: fujian
 * @description: 流的操作遵循了做什么而不是怎么做的原则
 * @date: 2021/5/1 16:37
 * @version: V1.0
 * @package: com.xuetang9.fujian.streamopt
 **/
@SuppressWarnings("all")
public class StreamDemo {
    public static void main(String[] args) throws IOException {
        String contents = new String(Files.readAllBytes(Paths.get("I:\\WorkSpace\\java_advanced\\advanced_section\\src\\com\\xuetang9\\fujian\\streamopt\\StreamDemo.java")),StandardCharsets.UTF_8);
//        System.out.println(contents);
        /*** java core第十版中的第一章中出现了一个正则"\\PL+",
         * 根据注释(Split into words:noletters are delimiters)提示，
         * 这个正则的意思应该就是以非字母分隔符;
         * 由此表，"\\PL+"正则还可以派生以下格式:
         * "\\PN+" 非数字;
         * "\\PZ+" 非分隔符;
         * "\\PS+" 非符号;
         * 等等...
         * */
        List<String> words = Arrays.asList(contents.split("\\PL+"));
        System.out.println(words.toString());
        // 获得顺序流
        long count = words.stream().filter(w->w.length() > 12).count();
        System.out.println(count);

        // 获得并行流
        count = words.parallelStream().filter(w -> w.length() > 5).count();
        System.out.println(count);
    }

}
